iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0

生成式 AI 產品最核心的當然就是 LLM 模型了,大部分企業自己架設 GenAI 產品主要是考量資安問題、以及針對使用場景 fine-tune 模型,因此對於模型的基本認識是非常重要的,尤其近日在 debug 的過程中更有所體悟,故前幾日會由淺到深,主要著重在開發過程中會需要了解的部分,我們先從模型的架構拆解開始。

Transfomer

https://ithelp.ithome.com.tw/upload/images/20240903/20151660WyQlCqSfaJ.jpg
附上一張一定非常多人看過的 Transformer 架構圖,源自2017年發表的一篇非常著名的論文《Attention is All You Need》,這篇論文原本是 Google 為了優化翻譯工具而做的研究,但在後來被 OpenAI 等公司廣泛應用,如今市面上大多數的 LLM(大型語言模型)都是基於這個架構訓練出來的。

Transformer 架構的基本運作是通過 編碼器(Encoder)解碼器(Decoder) 兩個核心部分來實現的。編碼器像一個專注於理解輸入內容的讀者,負責處理並理解輸入的數據,並轉換成一系列特徵向量。接著這些特徵向量會被傳遞給解碼器,而解碼器就像是一位作家,它根據編碼器理解的內容,生成新的序列,比如翻譯後的句子或其他文本。

而 Transformer 架構又可以衍生出三種主要類型的模型:

  1. Encoder-only models:僅使用編碼器的模型,適合需要深入理解輸入的任務,比如句子分類、實體辨識(NER),BERT 模型便是此類。
  2. Decoder-only models:僅使用解碼器的模型,適合生成任務,比如文本生成,GPT 模型便是此類。
  3. Encoder-decoder models(或稱 sequence-to-sequence models):同時使用編碼器和解碼器的模型,適用於翻譯、摘要等場景,如 T5、BART 模型等。

在編碼器和解碼器之間,有一個關鍵的運作機制叫做自注意力機制(Self-Attention)。這個機制能夠逐步分析輸入數據中的每個部分(如句子中的每個詞彙)與其他部分之間的關係。通過這種方式,模型可以識別哪些詞對當前詞的理解最為重要,進而更精確地捕捉上下文信息。這種處理方式使模型在理解輸入文本時能夠更全面,並在生成文本時更連貫和自然。

具體的運作機制可以參考附錄的文獻與課程介紹。


Pipelines

我們可以透過 Huggingface 的 pipeline 套件一窺 transformer 能為我們執行那些任務,這個套件包裝將整個文字從輸入到輸出的整個過程,我們用這個套件示範三種不同 transformer 架構的模型:

  1. Encoder-only models
    在這裡我們使用情感分析的 pipeline,從回應可以看到預設便是使用 bert-base 的 model。
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = "We are SI Dream Engineering Team."
sentiment_pipeline(data)
No model was supplied, defaulted to distilbert/distilbert-base-uncased-finetuned-sst-2-english and revision af0f99b (https://huggingface.co/distilbert/distilbert-base-uncased-finetuned-sst-2-english).
Using a pipeline without specifying a model name and revision in production is not recommended.
[{'label': 'POSITIVE', 'score': 0.9978912472724915}]
  1. Decoder-only models
    也可以直接套模型,這裡可以看到當使用 gpt-base 模型時,原本的分類任務會改成接續句子生成文字。
from transformers import pipeline

pipeline = pipeline(model="openai-community/gpt2")
data = "We are SI Dream Engineering Team."
pipeline(data)
[{'generated_text': 'We are SI Dream Engineering Team. We think about doing things our own way. We want to make a good game for YOU. We will always try, and we will try, every day to do that."\n\n"You are one of the'}]
  1. Encoder-decoder models
    接著我們換成 bart-base model,並把pipeline 第一段的介紹餵給模型,原本的任務就會改成摘要任務。
from transformers import pipeline

pipeline = pipeline(model="sshleifer/distilbart-cnn-12-6")
pipeline(data, min_length=5, max_length=30)
[{'summary_text': ' The pipelines are objects that abstract most of the complex code from the library . They offer a simple API dedicated to several tasks, including Named'}]

ref.


上一篇
[Day1] 寫作動機與學習資源
下一篇
[Day3] LLM 如何處理文本-Tokenizer
系列文
從系統設計切入,探索 GenAI 在企業中的實踐7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言